<?php 

BaseRouteLibYeti::match('/', 'index#main');
// alias for
BaseRouteLibYeti::match('/', Array(
    'controller' => 'index',
    'action'     => 'main',
));

BaseRouteLibYeti::match('/:controller', 'package/subpackage/:controller#actionHere');
// alias for
BaseRouteLibYeti::match('/:controller', Array(
    'controller' => 'package/subpackage/:controller',
    'action'     => 'actionHere'
));

// RESTful...
BaseRouteLibYeti::get('/',     'site/index#actionGet');
BaseRouteLibYeti::post('/',    'site/index#actionPost');
BaseRouteLibYeti::put('/',     'site/index#actionPut');
BaseRouteLibYeti::delete('/',  'site/index#actionDelete');
BaseRouteLibYeti::head('/',    'site/index#actionHead');
BaseRouteLibYeti::options('/', 'site/index#actionOptions');

// Sim!! Somente ajax ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') acessará esse método! ;)
// Alias para o depreciado match() com 'options' => enable_only_ajax = TRUE
BaseRouteLibYeti::ajax('/', 'index#actionForAjax');
// ou
BaseRouteLibYeti::xhr('/', 'index#actionForAjax');

// Usando caminhos em árvore no controller 
BaseRouteLibYeti::match('/bla/access', 'home/site/index#portal');
// ou
BaseRouteLibYeti::match('/bla/access', Array(
    'controller' => 'home/site/index',
    'action'     => 'portal',
));

// Globalização
// project/[en/]action/id
// match|get|post|put|delete|ajax
BaseRouteLibYeti::get('/:controller/:locale/:action/:id', Array(
    'controller' => 'project',
    'action'     => 'action',
    'id' => '([0-9]+)',
    
    'locale' => Array(
        'pt' => Array('project' => 'projeto',  'action' => 'acao'),   // projeto/pt/acao/x
        'es' => Array('project' => 'projecto', 'action' => 'acao'),   // projecto/es/acao/x
        'de' => Array('project' => 'projekt',  'action' => 'aktion'), // projekt/de/aktion/x
    ),
    
    'options' => Array(
        'default_locale' => 'en',
    ),
));
// ou...
BaseRouteLibYeti::post('/:controller/:locale/:action/:id', Array(
    'controller' => 'project',
    'action'     => 'action',
    'id' => '([0-9]+)',
    
    'options' => Array(
        // Buscará no arquivo de G11n, na seção de rotas, pelas traduções da rota com o nome 'router_named_xxx' :D
        'using_table_g11n'    => 'router_named_xxx',
        'default_locale_g11n' => 'en',
    ),
));

// Por user agent...
BaseRouteLibYeti::userAgent('([iphone|ipad|ipod])', '/:action/:id', Array(
    'controller' => 'device/mobile',
    'param'      => ':user_agent'
));

// Full options
BaseRouteLibYeti::match(':controller/:action/:subpackage/:param/:param2', Array(
    'controller' => 'home/disabled',
    'action'     => 'testing',
    'subpackage' => '([abc|def|ghi|jkl])',
    'param'      => '{alpha*}',
    'param2'     => '{alphanum*}',
    
    'options' => Array(
        'code_response' => 301,
        'url_redirect'  => 'http://www.google.com/',
        
        'user_agent' => '([iphone|ipad|ie])',
        
        'action_request'  => Array('POST', 'GET', 'DELETE', 'PUT'), // action request enable. Empty = all (get, post, put, delete)
        'url_extension'   => 'xml', // url need is 'disabled/testing/abc/param/param2.xml'
        'use_extension' => FALSE, // desabilita o uso de extensão de identificação na rota
        
        // [package|subpackage|controller|action|param], com esta opção, o subdomínio (se existir), será usado como um dos ids listados
        // Usando multiplos subdominios:
        // 'use_domain' => Array('package', 'controller', 'subpackage'),
        // test.other_test.blabla.example.com >> package: test | controller: other_test | subpackage: blabla
        'use_subdomain' => Array('package'),
        
        'using_table_g11n' => 'name_router_in_table', // Traduz as rotas de acordo com as rotas nomeadas na tabela de G11n
        //'callback_execute' => Array('test_plugin::action'), // pode executar callbacks...
        
        'enalbe_ajax' => TRUE, // acesso via ajax e via acesso cliente
        // acesso somente via ajax. Não precisa estar marcado 'enable_ajax' para esta funcionar
        //'enable_only_ajax' => TRUE, // deprecated! using BaseRouteLibYeti::ajax('match', 'routes');
    ),
));

BaseRouteLibYeti::match('/:controller/:action/:param', Array(
    'controller' => '{all*}',
    'action'     => '{all*}',
    'param'      => '{num*}',
));

BaseRouteLibYeti::match('/:controller/:action/:other_param', Array(
    'controller' => '{all*}',
    'action'     => '{all*}',
    'other_param' => '{num*}',
));

BaseRouteLibYeti::match('/:controller', Array(
    'controller' => '{all*}',
    'action'     => 'index',
));
